package com.atguigu.cloud.controller;

import cn.hutool.core.util.IdUtil;
import com.mysql.cj.util.TimeUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.TimeUnit;

/**
 * @author HanYiMing
 * @description 断路器请求接口控制类
 * @date 2024/3/21
 * @lastEditDate 2024/3/21
 * @lastEditAuthor
 * @lastDescription
 */
@RestController
public class PayCircuitController {


//    @GetMapping(value = "/pay/circuit/{id}")
//    public String myCircuit(@PathVariable(value = "id") Integer id) {
//        if (id == -4) {
//            throw new RuntimeException("不能为负数");
//        }
//        if (id == 9999) {
//            try {
//                TimeUnit.SECONDS.sleep(5);
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        }
//        return "hello,circuit！inputId:" + id + "\t" + IdUtil.simpleUUID();
//    }

    //=========Resilience4j bulkhead 的例子
    @GetMapping(value = "/pay/bulkhead/{id}")
    public String myBulkhead(@PathVariable("id") Integer id) {
        if (id == -4) throw new RuntimeException("----bulkhead id 不能-4");

        if (id == 9999) {
            try {
                TimeUnit.SECONDS.sleep(5);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        return "Hello, bulkhead! inputId:  " + id + " \t " + IdUtil.simpleUUID();
    }

    //=========Resilience4j ratelimit 的例子
    @GetMapping(value = "/pay/ratelimit/{id}")
    public String myRatelimit(@PathVariable("id") Integer id)
    {
        return "Hello, myRatelimit欢迎到来 inputId:  "+id+" \t " + IdUtil.simpleUUID();
    }

}
